S3へのリクエストをHTTPSのみ許可できるか検証してみた
こんにちは!コンサル部のinomaso(@inomasosan)です。
S3のバケットポリシーを調べていた際に以下のAWSナレッジを見つけました。
今回は、実際にS3のバケットポリシーを設定して、HTTPSリクエストのみを許可できるかAWS CLIで確認していきます。
まずは結論
HTTPS(HTTP over SSL/TLS)を強制するためには、S3バケット毎のバケットポリシーを設定する必要があります。
また、上記設定が有効化されている確認も必要となるので、中々に運用が大変です。
デフォルトだと、ほとんどのリクエストはHTTPSが使用されます。
そのため、個人情報等の重要な情報が保管されているバケットに対してのみ、設定するのが良いかと思います。
環境
今回実行した環境は以下の通りです。
- macOS Big Sur 11.6
- AWS CLI 2.2.35
前提
S3へのリクエストの仕様は、AWSナレッジに記載されていました。
Amazon S3 は HTTP リクエストと HTTPS リクエストの両方を許可します。デフォルトでは、リクエストは AWS マネジメントコンソール、AWS コマンドラインインターフェイス (AWS CLI)、または HTTPS を介して行われます。
やってみた
検証用S3バケット作成
S3バケットをデフォルト設定で作成し、バケットポリシーにHTTPリクエストを明示的に拒否するポリシーを設定します。
{ "Id": "ExamplePolicy", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSSLRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::<バケット名>", "arn:aws:s3:::<バケット名>/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" } ] }
テストファイル準備
S3バケットに検証用のファイルを用意します。
今回はAWS CLIで検証するので、S3バケットへの検証用のファイルアップロードもコマンドで実施していきます。
以下のコマンドで、ローカル端末に検証用のファイルを作成し、S3バケットにアップロードします。
※デフォルトはHTTPSリクエストなので、以下のコマンド実行は特に問題ありません。
% touch test.txt % aws s3 cp test.txt s3://<バケット名>/ upload: ./test.txt to s3://<バケット名>/test.txt % % aws s3 ls s3://<バケット名>/ 2021-10-20 14:17:56 0 test.txt
HTTPSリクエスト確認
明示的なHTTPSリクエスト確認をする場合は、--endpoint-url
オプションで、コマンドのデフォルトエンドポイントURLを上書きします。
今回は東京リージョンにS3を作成したのでhttps://s3.ap-northeast-1.amazonaws.com
と指定しています。
以下のコマンドで、先ほどアップロードしたファイルを問題なく参照できました。
aws s3 ls s3://<バケット名>/ --endpoint-url https://s3.ap-northeast-1.amazonaws.com 2021-10-20 14:17:56 0 test.txt
HTTPリクエスト確認
HTTPSリクエストと同様に--endpoint-url
オプションで、コマンドのデフォルトエンドポイントURLを上書きします。
HTTPでリクストするためhttp://s3.ap-northeast-1.amazonaws.com
と指定しています。
以下のコマンドで、HTTPリクエストの場合Access Denied
されることがわかりました。
% aws s3 ls s3://<バケット名>/ --endpoint-url http://s3.ap-northeast-1.amazonaws.com An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied
TLSのバージョンで細かい制御できないの?
いい感じのブログがあったので、こちらをご参照ください。
参考URL
まとめ
今回の検証にあたり梶原裕に色々とアドバイスを貰いました。改めてありがとうございます。
この記事が、どなたかのお役に立てば幸いです。それでは!